constraint theory